package com.study.csc.a16threadpool;

import java.util.concurrent.*;

/**
 * @author csc
 * @Date 2023/10/24 11:40
 * @PackageName:com.study.csc.a16threadpool
 * @ClassName: MyThreadDemo
 * @Description: TODO
 * @Version 1.0
 */
public class MyThreadDemo {


    public static void main(String[] args) {
        /*
            ThreadPoolExecutor threadPoolExeutor = new ThreadPoolExecutor
            (核心线程数量,最大线程数量,空闲线程最大存活时间,任务队列,创建线程工厂,任务的拒绝策略)

            参数一: 核心线程数量         不能小于0
            参数二: 最大线程数           不能小于等于0, 最大线程数量 >= 核心线程数量
            参数三: 空闲线程最大存活时间   不能小于0
            参数四: 时间单位             用TimeUnit指定
            参数五: 任务队列             不能位null
            参数六: 创建线程工厂          不能为null
            参数七: 任务的拒绝策略         不能为null
         */

        ThreadPoolExecutor pool  = new ThreadPoolExecutor(
                3,   //核心线程数量,不能小于0
                6,   //最大线程数,不能小于等于0, 最大线程数量 >= 核心线程数量
                60, //空闲线程最大存活时间
                TimeUnit.SECONDS,//时间单位
                new ArrayBlockingQueue<>(3),
                Executors.defaultThreadFactory(),//线程工厂 不能为null
                new ThreadPoolExecutor.AbortPolicy()//任务的拒绝策略
        );


    }

}
